#include<iostream>
#include<queue>
using namespace std;

//队列的容器适配器Container 必须支持pop_front 和push_back 
//所以可以使用：list deque 但是不能使用vector,因为不支持pop_front  
namespace Mango
{
template<class T,class Container = deque<T>> //默认的容器适配器为deque
class queue 
{
public:
    queue()
    {}
    ~queue()
    {}
    void push(const T& val)
    {
        _con.push_back(val);
    }
    void pop()
    {
        _con.pop_front();
    }
    size_t size()
    {
        return _con.size();
    }
    bool empty()
    {
        return _con.empty();
    }
    T& front()
    {
        return _con.front();
    }
    T& back()
    {
        return _con.back();
    }
private:
    Container _con;
};
}